#ifndef SHADERMATERIAL_H_
#define SHADERMATERIAL_H_

#include "material.h"
#include <string>

class TextureMaterial;

class ShaderMaterial : public Material{

public:

	ShaderMaterial();
	ShaderMaterial(nv::vec4f diffuseAmbient, nv::vec4f specular, float shinyness);
	~ShaderMaterial();

	bool loadShaders(std::string vertexShader, std::string fragmentShader);
	std::string LoadFromFile(std::string path);
	std::string log(unsigned int obj);

	void begin();
	void end();

	void setTextureMaterial(TextureMaterial *tex);
	int getUniform(std::string name);

private:

	TextureMaterial *textures;

	unsigned int vertex, fragment, program;

};


#endif /* SHADERMATERIAL_H_ */
